<html>

<head>
<title>libvorbis - function - vorbis_analysis</title>
<link rel=stylesheet href="style.css" type="text/css">
</head>

<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
<table border=0 width=100%>
<tr>
<td><p class=tiny>libvorbis documentation</p></td>
<td align=right><p class=tiny>libvorbis version 1.3.2 - 20101101</p></td>
</tr>
</table>

<h1>vorbis_analysis</h1>

<p><i>declared in "vorbis/codec.h";</i></p>

<p>Once the uncompressed audio data has been divided into blocks, this
function is called on each block. It looks up the encoding mode and
dispatches the block to the forward transform provided by that mode.
</p>
<p>When using a basic encoding mode, with no bitrate management,
an ogg_packet pointer can be given, and the coded block is returned
directly through that structure and can be placed in the output stream.
</p>
<p>Otherwise, NULL should be passed for the ogg_packet pointer. In
that case, after the transform has been applied, the block must passed
to vorbis_bitrate_addblock() for further coding. This method works with
both basic and managed encoding modes, so it's recommended for new code.
</p>

<table border=0 color=black cellspacing=0 cellpadding=7>
<tr bgcolor=#cccccc>
	<td>
<pre><b>
extern int      vorbis_analysis(vorbis_block *vb,ogg_packet *op);
</b></pre>
	</td>
</tr>
</table>

<h3>Parameters</h3>
<dl>
<dt><i>vb</i></dt>
<dd>Pointer to the vorbis_block to be encoded.</dd>
<dt><i>op</i></dt>
<dd>Optional pointer to an ogg_packet. This is normally NULL,
and the final output is obtained by passing <i>vb</i> though the
vorbis_bitrate_*() interface to perform further refinement.
However, when not using a bitrate managed encoding mode, it
is possible to skip that step by providing an ogg_packet pointer
here, obtaining the compressed data directly.</dd>
</dl>


<h3>Return Values</h3>
<ul>
<li>0 for success</li>
<li>negative values for failure:
<ul>
<li>OV_EINVAL - Invalid request; a non-NULL value was passed for <i>op</i> when the encoder is using a bitrate managed mode.</li> 
<li>OV_EFAULT - Internal fault; indicates a bug or memory corruption.</li>
<li>OV_EIMPL - Unimplemented; not supported by this version of the library.</li>
</ul>
</li>
</ul>
<p>

<br><br>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
<td><p class=tiny>copyright &copy; 2010 Xiph.Org</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a></p></td>
</tr><tr>
<td><p class=tiny>libvorbis documentation</p></td>
<td align=right><p class=tiny>libvorbis version 1.3.2 - 20101101</p></td>
</tr>
</table>


</body>

</html>
